1 /* 2 3 Boost Software License - Version 1.0 - August 17th, 2003 4 5 Permission is hereby granted, free of charge, to any person or organization 6 obtaining a copy of the software and accompanying documentation covered by 7 this license (the "Software") to use, reproduce, display, distribute, 8 execute, and transmit the Software, and to prepare derivative works of the 9 Software, and to permit third-parties to whom the Software is furnished to 10 do so, all subject to the following: 11 12 The copyright notices in the Software and this entire statement, including 13 the above license grant, this restriction and the following disclaimer, 14 must be included in all copies of the Software, in whole or in part, and 15 all derivative works of the Software, unless such copies or derivative 16 works are solely in the form of machine-executable object code generated by 17 a source language processor. 18 19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 DEALINGS IN THE SOFTWARE. 26 27 */ 28 29 module derelict.glib.giochannel; 30 31 import derelict.glib.gtypes; 32 import derelict.glib.glibconfig; 33 import derelict.glib.gstring; 34 import derelict.glib.gerror; 35 import derelict.glib.gquark; 36 import derelict.glib.gunicode; 37 import derelict.glib.gmain; 38 import derelict.glib.gconvert; 39 import derelict.glib.gpoll; 40 import core.stdc.config; 41 import core.stdc.string; 42 43 extern (C): 44 45 alias _GIOChannel GIOChannel; 46 alias _GIOFuncs GIOFuncs; 47 alias _Anonymous_0 GIOError; 48 alias _Anonymous_1 GIOChannelError; 49 alias _Anonymous_2 GIOStatus; 50 alias _Anonymous_3 GSeekType; 51 alias _Anonymous_4 GIOCondition; 52 alias _Anonymous_5 GIOFlags; 53 alias int function (_GIOChannel*, _Anonymous_4, void*) GIOFunc; 54 55 version(Derelict_Link_Static) 56 { 57 //extern( C ) __gshared 58 //{ 59 // shared GSourceFuncs g_io_watch_funcs; 60 //} 61 } 62 else 63 { 64 extern( C ) nothrow 65 { 66 alias da_g_io_watch_funcs = GSourceFuncs; 67 } 68 69 __gshared 70 { 71 da_g_io_watch_funcs g_io_watch_funcs; 72 } 73 } 74 75 76 enum _Anonymous_0 77 { 78 G_IO_ERROR_NONE = 0, 79 G_IO_ERROR_AGAIN = 1, 80 G_IO_ERROR_INVAL = 2, 81 G_IO_ERROR_UNKNOWN = 3 82 } 83 84 enum _Anonymous_1 85 { 86 G_IO_CHANNEL_ERROR_FBIG = 0, 87 G_IO_CHANNEL_ERROR_INVAL = 1, 88 G_IO_CHANNEL_ERROR_IO = 2, 89 G_IO_CHANNEL_ERROR_ISDIR = 3, 90 G_IO_CHANNEL_ERROR_NOSPC = 4, 91 G_IO_CHANNEL_ERROR_NXIO = 5, 92 G_IO_CHANNEL_ERROR_OVERFLOW = 6, 93 G_IO_CHANNEL_ERROR_PIPE = 7, 94 G_IO_CHANNEL_ERROR_FAILED = 8 95 } 96 97 enum _Anonymous_2 98 { 99 G_IO_STATUS_ERROR = 0, 100 G_IO_STATUS_NORMAL = 1, 101 G_IO_STATUS_EOF = 2, 102 G_IO_STATUS_AGAIN = 3 103 } 104 105 enum _Anonymous_3 106 { 107 G_SEEK_CUR = 0, 108 G_SEEK_SET = 1, 109 G_SEEK_END = 2 110 } 111 112 enum _Anonymous_4 113 { 114 G_IO_IN = 1, 115 G_IO_OUT = 4, 116 G_IO_PRI = 2, 117 G_IO_ERR = 8, 118 G_IO_HUP = 16, 119 G_IO_NVAL = 32 120 } 121 122 enum _Anonymous_5 123 { 124 G_IO_FLAG_APPEND = 1, 125 G_IO_FLAG_NONBLOCK = 2, 126 G_IO_FLAG_IS_READABLE = 4, 127 G_IO_FLAG_IS_WRITABLE = 8, 128 G_IO_FLAG_IS_SEEKABLE = 16, 129 G_IO_FLAG_MASK = 31, 130 G_IO_FLAG_GET_MASK = 31, 131 G_IO_FLAG_SET_MASK = 3 132 } 133 134 struct _GIOChannel 135 { 136 gint ref_count; 137 GIOFuncs* funcs; 138 gchar* encoding; 139 GIConv read_cd; 140 GIConv write_cd; 141 gchar* line_term; 142 guint line_term_len; 143 gsize buf_size; 144 GString* read_buf; 145 GString* encoded_read_buf; 146 GString* write_buf; 147 gchar[6] partial_write_buf; 148 guint use_buffer; 149 guint do_encode; 150 guint close_on_unref; 151 guint is_readable; 152 guint is_writeable; 153 guint is_seekable; 154 gpointer reserved1; 155 gpointer reserved2; 156 } 157 158 struct _GIOFuncs 159 { 160 GIOStatus function (GIOChannel*, gchar*, gsize, gsize*, GError**) io_read; 161 GIOStatus function (GIOChannel*, const(gchar)*, gsize, gsize*, GError**) io_write; 162 GIOStatus function (GIOChannel*, gint64, GSeekType, GError**) io_seek; 163 GIOStatus function (GIOChannel*, GError**) io_close; 164 GSource* function (GIOChannel*, GIOCondition) io_create_watch; 165 void function (GIOChannel*) io_free; 166 GIOStatus function (GIOChannel*, GIOFlags, GError**) io_set_flags; 167 GIOFlags function (GIOChannel*) io_get_flags; 168 } 169 170 171 172 version(Derelict_Link_Static) 173 { 174 extern( C ) nothrow 175 { 176 void g_io_channel_init(GIOChannel* channel); 177 GIOChannel* g_io_channel_ref(GIOChannel* channel); 178 void g_io_channel_unref(GIOChannel* channel); 179 GIOError g_io_channel_read(GIOChannel* channel, gchar* buf, gsize count, gsize* bytes_read); 180 GIOError g_io_channel_write(GIOChannel* channel, const(gchar)* buf, gsize count, gsize* bytes_written); 181 GIOError g_io_channel_seek(GIOChannel* channel, gint64 offset, GSeekType type); 182 void g_io_channel_close(GIOChannel* channel); 183 GIOStatus g_io_channel_shutdown(GIOChannel* channel, gboolean flush, GError** err); 184 guint g_io_add_watch_full(GIOChannel* channel, gint priority, GIOCondition condition, GIOFunc func, gpointer user_data, GDestroyNotify notify); 185 GSource* g_io_create_watch(GIOChannel* channel, GIOCondition condition); 186 guint g_io_add_watch(GIOChannel* channel, GIOCondition condition, GIOFunc func, gpointer user_data); 187 void g_io_channel_set_buffer_size(GIOChannel* channel, gsize size); 188 gsize g_io_channel_get_buffer_size(GIOChannel* channel); 189 GIOCondition g_io_channel_get_buffer_condition(GIOChannel* channel); 190 GIOStatus g_io_channel_set_flags(GIOChannel* channel, GIOFlags flags, GError** error); 191 GIOFlags g_io_channel_get_flags(GIOChannel* channel); 192 void g_io_channel_set_line_term(GIOChannel* channel, const(gchar)* line_term, gint length); 193 const(gchar)* g_io_channel_get_line_term(GIOChannel* channel, gint* length); 194 void g_io_channel_set_buffered(GIOChannel* channel, gboolean buffered); 195 gboolean g_io_channel_get_buffered(GIOChannel* channel); 196 GIOStatus g_io_channel_set_encoding(GIOChannel* channel, const(gchar)* encoding, GError** error); 197 const(gchar)* g_io_channel_get_encoding(GIOChannel* channel); 198 void g_io_channel_set_close_on_unref(GIOChannel* channel, gboolean do_close); 199 gboolean g_io_channel_get_close_on_unref(GIOChannel* channel); 200 GIOStatus g_io_channel_flush(GIOChannel* channel, GError** error); 201 GIOStatus g_io_channel_read_line(GIOChannel* channel, gchar** str_return, gsize* length, gsize* terminator_pos, GError** error); 202 GIOStatus g_io_channel_read_line_string(GIOChannel* channel, GString* buffer, gsize* terminator_pos, GError** error); 203 GIOStatus g_io_channel_read_to_end(GIOChannel* channel, gchar** str_return, gsize* length, GError** error); 204 GIOStatus g_io_channel_read_chars(GIOChannel* channel, gchar* buf, gsize count, gsize* bytes_read, GError** error); 205 GIOStatus g_io_channel_read_unichar(GIOChannel* channel, gunichar* thechar, GError** error); 206 GIOStatus g_io_channel_write_chars(GIOChannel* channel, const(gchar)* buf, gssize count, gsize* bytes_written, GError** error); 207 GIOStatus g_io_channel_write_unichar(GIOChannel* channel, gunichar thechar, GError** error); 208 GIOStatus g_io_channel_seek_position(GIOChannel* channel, gint64 offset, GSeekType type, GError** error); 209 GIOChannel* g_io_channel_new_file(const(gchar)* filename, const(gchar)* mode, GError** error); 210 GQuark g_io_channel_error_quark(); 211 GIOChannelError g_io_channel_error_from_errno(gint en); 212 GIOChannel* g_io_channel_unix_new(int fd); 213 gint g_io_channel_unix_get_fd(GIOChannel* channel); 214 void g_io_channel_win32_make_pollfd(GIOChannel *channel, GIOCondition condition, GPollFD *fd); 215 gint g_io_channel_win32_poll(GPollFD *fds, gint n_fds, gint timeout_); 216 GIOChannel* g_io_channel_win32_new_messages(gsize hwnd); 217 GIOChannel* g_io_channel_win32_new_fd(gint fd); 218 gint g_io_channel_win32_get_fd(GIOChannel *channel); 219 GIOChannel* g_io_channel_win32_new_socket(gint socket); 220 } 221 } 222 else 223 { 224 extern( C ) nothrow 225 { 226 alias da_g_io_channel_init = void function(GIOChannel* channel); 227 alias da_g_io_channel_ref = GIOChannel* function(GIOChannel* channel); 228 alias da_g_io_channel_unref = void function(GIOChannel* channel); 229 alias da_g_io_channel_read = GIOError function(GIOChannel* channel, gchar* buf, gsize count, gsize* bytes_read); 230 alias da_g_io_channel_write = GIOError function(GIOChannel* channel, const(gchar)* buf, gsize count, gsize* bytes_written); 231 alias da_g_io_channel_seek = GIOError function(GIOChannel* channel, gint64 offset, GSeekType type); 232 alias da_g_io_channel_close = void function(GIOChannel* channel); 233 alias da_g_io_channel_shutdown = GIOStatus function(GIOChannel* channel, gboolean flush, GError** err); 234 alias da_g_io_add_watch_full = guint function(GIOChannel* channel, gint priority, GIOCondition condition, GIOFunc func, gpointer user_data, GDestroyNotify notify); 235 alias da_g_io_create_watch = GSource* function(GIOChannel* channel, GIOCondition condition); 236 alias da_g_io_add_watch = guint function(GIOChannel* channel, GIOCondition condition, GIOFunc func, gpointer user_data); 237 alias da_g_io_channel_set_buffer_size = void function(GIOChannel* channel, gsize size); 238 alias da_g_io_channel_get_buffer_size = gsize function(GIOChannel* channel); 239 alias da_g_io_channel_get_buffer_condition = GIOCondition function(GIOChannel* channel); 240 alias da_g_io_channel_set_flags = GIOStatus function(GIOChannel* channel, GIOFlags flags, GError** error); 241 alias da_g_io_channel_get_flags = GIOFlags function(GIOChannel* channel); 242 alias da_g_io_channel_set_line_term = void function(GIOChannel* channel, const(gchar)* line_term, gint length); 243 alias da_g_io_channel_get_line_term = const(gchar)* function(GIOChannel* channel, gint* length); 244 alias da_g_io_channel_set_buffered = void function(GIOChannel* channel, gboolean buffered); 245 alias da_g_io_channel_get_buffered = gboolean function(GIOChannel* channel); 246 alias da_g_io_channel_set_encoding = GIOStatus function(GIOChannel* channel, const(gchar)* encoding, GError** error); 247 alias da_g_io_channel_get_encoding = const(gchar)* function(GIOChannel* channel); 248 alias da_g_io_channel_set_close_on_unref = void function(GIOChannel* channel, gboolean do_close); 249 alias da_g_io_channel_get_close_on_unref = gboolean function(GIOChannel* channel); 250 alias da_g_io_channel_flush = GIOStatus function(GIOChannel* channel, GError** error); 251 alias da_g_io_channel_read_line = GIOStatus function(GIOChannel* channel, gchar** str_return, gsize* length, gsize* terminator_pos, GError** error); 252 alias da_g_io_channel_read_line_string = GIOStatus function(GIOChannel* channel, GString* buffer, gsize* terminator_pos, GError** error); 253 alias da_g_io_channel_read_to_end = GIOStatus function(GIOChannel* channel, gchar** str_return, gsize* length, GError** error); 254 alias da_g_io_channel_read_chars = GIOStatus function(GIOChannel* channel, gchar* buf, gsize count, gsize* bytes_read, GError** error); 255 alias da_g_io_channel_read_unichar = GIOStatus function(GIOChannel* channel, gunichar* thechar, GError** error); 256 alias da_g_io_channel_write_chars = GIOStatus function(GIOChannel* channel, const(gchar)* buf, gssize count, gsize* bytes_written, GError** error); 257 alias da_g_io_channel_write_unichar = GIOStatus function(GIOChannel* channel, gunichar thechar, GError** error); 258 alias da_g_io_channel_seek_position = GIOStatus function(GIOChannel* channel, gint64 offset, GSeekType type, GError** error); 259 alias da_g_io_channel_new_file = GIOChannel* function(const(gchar)* filename, const(gchar)* mode, GError** error); 260 alias da_g_io_channel_error_quark = GQuark function(); 261 alias da_g_io_channel_error_from_errno = GIOChannelError function(gint en); 262 alias da_g_io_channel_unix_new = GIOChannel* function(int fd); 263 alias da_g_io_channel_unix_get_fd = gint function(GIOChannel* channel); 264 alias da_g_io_channel_win32_make_pollfd = void function(GIOChannel *channel, GIOCondition condition, GPollFD *fd); 265 alias da_g_io_channel_win32_poll = gint function(GPollFD *fds, gint n_fds, gint timeout_); 266 alias da_g_io_channel_win32_new_messages = GIOChannel* function(gsize hwnd); 267 alias da_g_io_channel_win32_new_fd = GIOChannel* function(gint fd); 268 alias da_g_io_channel_win32_get_fd = gint function(GIOChannel *channel); 269 alias da_g_io_channel_win32_new_socket = GIOChannel* function(gint socket); 270 } 271 272 __gshared 273 { 274 da_g_io_channel_init g_io_channel_init; 275 da_g_io_channel_ref g_io_channel_ref; 276 da_g_io_channel_unref g_io_channel_unref; 277 da_g_io_channel_read g_io_channel_read; 278 da_g_io_channel_write g_io_channel_write; 279 da_g_io_channel_seek g_io_channel_seek; 280 da_g_io_channel_close g_io_channel_close; 281 da_g_io_channel_shutdown g_io_channel_shutdown; 282 da_g_io_add_watch_full g_io_add_watch_full; 283 da_g_io_create_watch g_io_create_watch; 284 da_g_io_add_watch g_io_add_watch; 285 da_g_io_channel_set_buffer_size g_io_channel_set_buffer_size; 286 da_g_io_channel_get_buffer_size g_io_channel_get_buffer_size; 287 da_g_io_channel_get_buffer_condition g_io_channel_get_buffer_condition; 288 da_g_io_channel_set_flags g_io_channel_set_flags; 289 da_g_io_channel_get_flags g_io_channel_get_flags; 290 da_g_io_channel_set_line_term g_io_channel_set_line_term; 291 da_g_io_channel_get_line_term g_io_channel_get_line_term; 292 da_g_io_channel_set_buffered g_io_channel_set_buffered; 293 da_g_io_channel_get_buffered g_io_channel_get_buffered; 294 da_g_io_channel_set_encoding g_io_channel_set_encoding; 295 da_g_io_channel_get_encoding g_io_channel_get_encoding; 296 da_g_io_channel_set_close_on_unref g_io_channel_set_close_on_unref; 297 da_g_io_channel_get_close_on_unref g_io_channel_get_close_on_unref; 298 da_g_io_channel_flush g_io_channel_flush; 299 da_g_io_channel_read_line g_io_channel_read_line; 300 da_g_io_channel_read_line_string g_io_channel_read_line_string; 301 da_g_io_channel_read_to_end g_io_channel_read_to_end; 302 da_g_io_channel_read_chars g_io_channel_read_chars; 303 da_g_io_channel_read_unichar g_io_channel_read_unichar; 304 da_g_io_channel_write_chars g_io_channel_write_chars; 305 da_g_io_channel_write_unichar g_io_channel_write_unichar; 306 da_g_io_channel_seek_position g_io_channel_seek_position; 307 da_g_io_channel_new_file g_io_channel_new_file; 308 da_g_io_channel_error_quark g_io_channel_error_quark; 309 da_g_io_channel_error_from_errno g_io_channel_error_from_errno; 310 da_g_io_channel_unix_new g_io_channel_unix_new; 311 da_g_io_channel_unix_get_fd g_io_channel_unix_get_fd; 312 da_g_io_channel_win32_make_pollfd g_io_channel_win32_make_pollfd; 313 da_g_io_channel_win32_poll g_io_channel_win32_poll; 314 da_g_io_channel_win32_new_messages g_io_channel_win32_new_messages; 315 da_g_io_channel_win32_new_fd g_io_channel_win32_new_fd; 316 da_g_io_channel_win32_get_fd g_io_channel_win32_get_fd; 317 da_g_io_channel_win32_new_socket g_io_channel_win32_new_socket; 318 } 319 }